Перейти к основному содержимому

3.3. Datanode Service

Компоненты Apache Ozone: DataNode Service

DataNode Service — это компонент Apache Ozone, который отвечает за фактическое хранение данных на узлах кластера. DataNodes выполняют ключевую роль в обеспечении распределённого хранения, репликации и доступности данных. Каждый DataNode хранит контейнеры и блоки данных, а также передаёт метаданные и heartbeat-сообщения на Storage Container Manager (SCM) для мониторинга и управления.


1. Основные функции DataNode Service

  1. Хранение данных:

    • DataNode хранит контейнеры, содержащие блоки данных, распределённые по дискам узла.
    • Поддерживает оптимизацию ввода/вывода для обеспечения высокой производительности при чтении и записи данных.
  2. Репликация данных:

    • DataNode участвует в процессе репликации, сохраняя копии блоков данных для обеспечения отказоустойчивости.
  3. Heartbeat и отчёты состояния:

    • DataNode регулярно отправляет heartbeat-сообщения и отчёты о состоянии на SCM, информируя его о доступности узла и количестве хранимых данных.
  4. Обнаружение и восстановление после сбоев:

    • В случае сбоя узла другие DataNodes восстанавливают недостающие реплики под управлением SCM.

2. Запуск и остановка DataNode

Запуск DataNode

DataNode запускается на каждом узле, где будут храниться данные. Используйте следующую команду для запуска службы:

bin/ozone datanode --daemon start

Остановка DataNode

Для остановки службы используйте команду:

bin/ozone datanode --daemon stop

Проверка состояния DataNode

Вы можете проверить статус всех DataNodes в кластере:

bin/ozone admin datanode list

3. Конфигурация DataNode Service

Параметры DataNode настраиваются в файле ozone-site.xml.

Пример конфигурации:

<configuration>
<!-- Директория для хранения данных на DataNode -->
<property>
<name>ozone.datanode.data.dir</name>
<value>/var/lib/ozone/data</value>
</property>

<!-- Интервал отправки heartbeat-сообщений -->
<property>
<name>ozone.scm.heartbeat.interval</name>
<value>30s</value>
</property>

<!-- Интервал отправки отчётов о состоянии контейнеров -->
<property>
<name>ozone.scm.container.report.interval</name>
<value>10m</value>
</property>

<!-- Порт, на котором работает DataNode -->
<property>
<name>ozone.datanode.port</name>
<value>9858</value>
</property>
</configuration>
  • ozone.datanode.data.dir: Указывает путь к директории, где будут храниться данные.
  • ozone.scm.heartbeat.interval: Интервал отправки heartbeat-сообщений на SCM.
  • ozone.scm.container.report.interval: Интервал отправки отчётов о контейнерах.
  • ozone.datanode.port: Порт, используемый DataNode для обмена данными.

4. Резервное копирование и восстановление данных

SCM автоматически управляет репликацией данных, гарантируя их сохранность даже при сбое DataNode. Однако вы можете выполнить принудительное восстановление контейнера вручную.

Восстановление контейнера:

bin/ozone admin container recover <container-id>

5. Мониторинг и управление DataNode

  1. Просмотр списка всех DataNodes:

    bin/ozone admin datanode list
  2. Проверка состояния контейнеров на DataNode:

    bin/ozone admin container list --datanode=<datanode-id>
  3. Просмотр логов DataNode: Логи DataNode находятся в директории /var/log/ozone/.

    Пример просмотра логов:

    tail -f /var/log/ozone/datanode.log

6. Обработка отказов и восстановление данных

При отказе одного из DataNodes система автоматически восстанавливает недостающие реплики на других узлах. SCM следит за состоянием узлов и инициирует процесс восстановления.

Ручное удаление недоступного DataNode из кластера:

Если DataNode вышел из строя и не может быть восстановлен, вы можете удалить его из кластера:

bin/ozone admin datanode remove <datanode-id>

7. Оптимизация работы DataNode

  1. Использование нескольких дисков:
    Разместите данные на нескольких дисках (JBOD или RAID) для повышения производительности и отказоустойчивости.

  2. Балансировка реплик:
    Для равномерного распределения данных по узлам используйте команду:

    bin/ozone admin datanode rebalance
  3. Тюнинг параметров ввода/вывода:
    Настройте параметры дисков и сетевого подключения для минимизации задержек и повышения скорости передачи данных.


8. Пример работы с DataNode

  1. Запуск DataNode на новом узле:

    bin/ozone datanode --daemon start
  2. Добавление нового DataNode в кластер:

    Новый узел автоматически регистрируется в SCM при подключении и начинает принимать контейнеры и реплики.

  3. Восстановление контейнеров после сбоя узла:

    При выходе одного узла из строя SCM инициирует перенос недостающих реплик на другие узлы.


Итог

DataNode Service является ключевым компонентом Apache Ozone, обеспечивающим физическое хранение данных и их репликацию в распределённой среде. DataNodes взаимодействуют с SCM, обрабатывают операции ввода-вывода и обеспечивают отказоустойчивость системы. С помощью DataNode Service Apache Ozone предоставляет масштабируемое и надёжное хранилище данных для распределённых приложений и аналитических задач.